草庐IT

c++ - 翻译 C++ 片段

全部标签

C++ 编译。翻译阶段#1。通用字符名称

我不明白它在C++标准中的含义:Anysourcefilecharacternotinthebasicsourcecharacterset(2.3)isreplacedbytheuniversal-character-namethatdesignatesthatcharac-ter.(Animplementationmayuseanyinternalencoding,solongasanactualextendedcharacterencounteredinthesourcefile,andthesameextendedcharacterexpressedinthesourcefile

c++ - 迭代中的指针算法是否溢出安全?

即使在较新的C++代码中,我也经常看到使用普通指针算法进行数组迭代。我想知道它们到底有多安全,使用它们是否是个好主意。考虑这个片段(如果你用calloc代替new,它也会在C中编译):int8_t*buffer=newint8_t[16];for(int8_t*p=buffer;p当buffer发生分配到地址0xFFFFFFF0时,这种迭代不会导致溢出并完全跳过循环吗(在32位地址空间中)或0xFFFFFFFFFFFFFFFF0(64位)?据我所知,这是一种非常不幸但仍有可能出现的情况。 最佳答案 这是安全的。C和C++标准明确允许

c++ - 这是编译器编译的顺序

好吧,我想知道编译器“读取”代码的顺序是什么。例如:假设我有以下代码片段:intN,M;N=M=0;在这种情况下,编译器会为N和M分离一部分内存(int,4字节),然后在第二行(我怀疑的地方)有两件事,一个:编译器“读取”N等于M并且都等于零。或编译器“读”出零,放到M的内存中,然后得到M的值,也就是零,放到N的内存中。也就是说,是从右到左,还是从左到右?我不知道我的疑问是否清楚,但在我做的测试中:inti=0;/*Ideclaredthevariablei,andassignzerovaluetoit*/printf("%d",i++);/*Prints0*/printf("%d",

C++ 翻译阶段混淆

有人可以解释为什么以下内容不起作用吗?intmain()//TriedonseveralrecentC++'03compilers.{#defineFOOLconstwchar_t*constfoo=FOO"bar";//Willerroroutwithsomethinglike:"identifier'L'isundefined."#undefFOO}我认为预处理是在比字符串文字操作和一般标记翻译更早的翻译阶段完成的。编译器会不会或多或少地看到这个:intmain(){constwchar_t*constfoo=L"bar";}如果有人能引用标准中的解释,那就太好了。

c++ - 具有相同名称的类 - 是否仅限于同一翻译单元?

假设我有以下代码:foo.hclassFoo{//...};foo.cpp#include"foo.h"//FunctionsforclassFoodefinedhere...假设Foo内置于静态库foo.lib中。现在假设我有以下内容:foo2.hclassFoo{//...};foo2.cpp#include"foo2.h"//FunctionsforclassFoodefinedhere...这被内置到一个单独的静态库foo2.lib中。现在,如果我将foo.lib和foo2.lib重新链接到一个可执行程序foo.exe中,它应该会报错吗classFoo被定义了两次?根据我的经验

c++ - 什么是最快的 C++ 类或 C 库将纬度和经度从十进制度数转换为字符串并返回

我正在寻找最好的C或C++代码来编码和解码来自/至double/char的十进制纬度和经度值。我更喜欢将代码从double转换为char[],反之亦然而不是C++字符串。如果您有代码片段,那也很棒。澄清一下:我需要将字符串Degrees/Minutes/Seconds转换为double然后再转换回字符串。我有3亿条记录,所以速度是一个大问题。参见:http://en.wikipedia.org/wiki/Geographic_coordinate_conversion 最佳答案 通过电子邮件与OP(amanda)合作,我们开发了一个

c++ - 如何避免在从 .so 调用函数抛出异常时崩溃

这是我所做的,我想优雅地处理这个异常:代码片段:我的.cpp#includeextern"C"voidsome_func(){throw"(ExceptionThrownbysome_func!!)";}代码片段:exception.c#includeexternvoidsome_func();intso_main(){some_func();return0;}从上面的两个片段中,我使用以下命令创建了一个shared_objectlibexception.so:g++-c-fPICsrc/my.cppgcc-c-ansi-fPICsrc/exception.cg++-fPIC-shar

c++ - 为什么模板类函数必须在同一个翻译单元中声明?

以这段代码为例:/**foo.h**Createdon:Nov5,2011*Author:AutoBotAM*/#ifndefFOO_H_#defineFOO_H_templateclassFoo{public:voidBar(Typeobject);};#endif/*FOO_H_*/./**foo.cpp**Createdon:Nov5,2011*Author:AutoBotAM*/#includeusingnamespacestd;#include"foo.h"templatevoidFoo::Bar(Typeobject){cout./**main.cpp**Createdon

c++ - 返回类型而不是对象如何有效,误解了代码片段

我尝试了boostmsmlite,这是一个非常好的状态机实现。一如既往,我试图了解它是如何工作的,但发现了一个我无法理解的代码片段。请注意:我不会在这里发布来自boost的整个文件,它在这里:https://github.com/boost-experimental/sml/blob/f636c05cb1a483e5131348d59d6151453ca3f9f2/include/boost/msm-lite.hpp测试代码仅供了解幕后情况:autox2="test"_t;//compilesfine!那应该转到这个代码片段:templateautooperator""_t()BOOS

c++ - 基本 C++ 套接字编程中的异常 HTTP 响应

我已经用C++设置了一个基本的HTTP客户端,到目前为止它工作正常。这是一项学校作业,所以还有很多事情要做,但我遇到了问题。我在while循环中使用recv()函数,将响应片段重复添加到我的响应缓冲区,然后每次都输出该缓冲区。问题是,在每段响应的末尾,HTTP请求也被附加了。例如,响应将是页面源代码的一个block,然后是“GET/HTTP/1.1...”,然后是下一个block,然后是“GET...”,依此类推上。这是我的相关代码://Preparerequestcharrequest[]="HEAD/index.htmlHTTP/1.1\r\nHOST:www.google.com